package hbt;

import negocio.Area;
import negocio.Barra;
import negocio.Cafeteria;
import negocio.Caja;
import negocio.Carta;
import negocio.CierreCaja;
import negocio.Cocina;
import negocio.ComisionMozo;
import negocio.ComisionMozoID;

import negocio.Deposito;
import negocio.Factura;
import negocio.InformeReposicion;
import negocio.Ingrediente;
import negocio.Insumo;
import negocio.ItemRemito;
import negocio.ItemSolicitudReposicion;
import negocio.Item_Compra;
import negocio.Mesa;
import negocio.MesaCombinada;
import negocio.MesaSimple;
import negocio.Movimiento;
import negocio.Mozo;
import negocio.OrdenCompra;
import negocio.Pedido;
import negocio.PlanProduccion;
import negocio.Plato;
import negocio.Producto;
import negocio.ProductoEstimado;
import negocio.ProductosAComprar;
import negocio.Receta;
import negocio.Remito;
import negocio.Restaurante;
import negocio.Salon;
import negocio.Sector;
import negocio.SemiElaborado;
import negocio.SolicitudReposicion;
import negocio.Tarea;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil
{
    private static final SessionFactory sessionFactory;
    static
    {
        try
        {
        	AnnotationConfiguration config = new AnnotationConfiguration();
        	config.addAnnotatedClass(Area.class);
        	config.addAnnotatedClass(Barra.class);
        	config.addAnnotatedClass(Cafeteria.class);
        	config.addAnnotatedClass(Carta.class);
        	config.addAnnotatedClass(Cocina.class);
        	config.addAnnotatedClass(ProductoEstimado.class);
        	config.addAnnotatedClass(Deposito.class);
        	config.addAnnotatedClass(Factura.class);
        	config.addAnnotatedClass(InformeReposicion.class);
        	config.addAnnotatedClass(Ingrediente.class);
        	config.addAnnotatedClass(Insumo.class);
        	config.addAnnotatedClass(Item_Compra.class);
        	config.addAnnotatedClass(ItemRemito.class);
        	config.addAnnotatedClass(ItemSolicitudReposicion.class);
        	config.addAnnotatedClass(Mesa.class);
        	config.addAnnotatedClass(MesaCombinada.class);
        	config.addAnnotatedClass(MesaSimple.class);
        	config.addAnnotatedClass(Movimiento.class);
        	config.addAnnotatedClass(Mozo.class);
        	config.addAnnotatedClass(OrdenCompra.class);
        	config.addAnnotatedClass(Pedido.class);
        	config.addAnnotatedClass(PlanProduccion.class);
        	config.addAnnotatedClass(Plato.class);
        	config.addAnnotatedClass(Producto.class);
        	config.addAnnotatedClass(Receta.class);
        	config.addAnnotatedClass(Remito.class);
        	config.addAnnotatedClass(Sector.class);
        	config.addAnnotatedClass(SemiElaborado.class);
        	config.addAnnotatedClass(Tarea.class);
        	config.addAnnotatedClass(SolicitudReposicion.class);
        	config.addAnnotatedClass(ComisionMozoID.class);
        	config.addAnnotatedClass(ComisionMozo.class);
        	config.addAnnotatedClass(Caja.class);
        	config.addAnnotatedClass(Salon.class);
        	config.addAnnotatedClass(CierreCaja.class);
        	config.addAnnotatedClass(Restaurante.class);
        	config.addAnnotatedClass(ProductosAComprar.class);
        	
            sessionFactory = config.buildSessionFactory();
        }
        catch (Throwable ex)
        {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    
    public static Session getSession()throws HibernateException {
    	return sessionFactory.openSession();
    }
 
    public static SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }
}
